#include "padding.h"

Padding::Padding(void)
{
}

Padding::~Padding(void)
{
}

/*
	Gemaakt door gerco Koks
	Methode maakt van de attribuut imgSource een afbeelding met padding.
	De afmeting van de padding wordt ook als attribuut mee gegeven.
	De afbeelding met padding wordt geretourneerd.
*/
Image Padding::zeroPadding(Image &imgSource, int paddedSize, Task *task )
{
	// members
	unsigned int row, col, chan;
	// paddedsize * 2 omdat er padding aan de bovenkant en onderkant van de afbeelding moet komen
	int width = imgSource.width() + (paddedSize * 2);
	// padddedSize * 2 omdat er padding aan de rechterkant en linkerkant van de afbeeldingen moet komen
	int height = imgSource.height() + (paddedSize * 2);

	// definieren van een paddedImage met behulp van de task klasse
	// nieuwe DIB
	task->_paddedImage = new DIB();
	// format
	task->_paddedImage->setFormat( task->_originalImage->format() );
	// creeer
	task->createPaddedImage( width, height );
	task->_paddedImage->create();
	// van DIB naar image
	Image imgPadded = task->_paddedImage->getImage();

	// maak alle bytes in de imgPadded zwart;
	// loop door de rijen	
	for( row = 0; row < imgPadded.height(); row++ )
	{
		// loop door de kolommen
		for( col = 0; col < imgPadded.width(); col++ )
		{
			// loop door de channels
			for( chan = 0; chan < 3; chan++ )
			{
				imgPadded[row][col][chan] = (byte)0;
			}
		}
	}

	// vervolgens imgSource in imgPadded loopen
	for( row = 0; row < imgSource.height(); row++ )
	{
		// loop door de kolommen
		for( col = 0; col < imgSource.width(); col++ )
		{
			// loop door de channels
			for( chan = 0; chan < 3; chan++ )
			{
				//imgSource(0,0) = imgPadded((0 + paddedSize), (0 + paddedSize))
				// en dit geldt voor alle coordinaten
				imgPadded[row + paddedSize][col + paddedSize][chan] = imgSource[row][col][chan];
			}
		}
	}

	// return waarde
	return imgPadded;
}

